package jugador;

import java.awt.Color;
import java.awt.Graphics;

public class PuntoJugador {
	int id;
	int xActual;
	int yActual;
	int xDeseada;
	int yDeseada;
	int RADIO;
	
	double distanciaX;
	double distanciaY;
    
	
	
	double velocidad;
	double angulo;
	
	public PuntoJugador(){
		id=0;
		
		xActual=0;
		yActual=0;
		yDeseada=0;
		xDeseada=0;
		
		RADIO=20;
		
		velocidad=50;
		distanciaX=0;
		distanciaY=0;
		
		angulo=0;
		
	}
	public void dibujar(Graphics g){
		g.setColor(Color.green);
		g.fillOval(xActual-(RADIO/2), yActual-(RADIO/2), RADIO, RADIO);
		g.setColor(Color.BLACK);
		g.drawOval(xActual-(RADIO/2), yActual-(RADIO/2), RADIO, RADIO);
		
		g.drawLine((xActual)+-5,(yActual), (xActual)+5, (yActual));
		g.drawLine((xActual), (yActual)-5, (xActual), (yActual)+5);
	}
	
	public void actualizar(double tiempo){
		/*System.out.println("X: "+xActual);
		System.out.println("Y: "+yActual);
		System.out.println("dist: "+distancia);*/
		if(xDeseada!=xActual || yDeseada!=yActual){
			double distancia;
			distancia = (velocidad*tiempo);
			distanciaX=distanciaX+ Math.cos(angulo)*distancia;
			distanciaY=distanciaY+ Math.sin(angulo)*distancia;
			
			
			
			//para las x
			if(xDeseada>xActual){
				while(distanciaX>=1){
					xActual++;
					distanciaX-=1;
					if(xActual>xDeseada){
						xActual=xDeseada;
						break;
					}
				}
			}else{
				if(xDeseada<xActual){
					while(distanciaX>=1){
						xActual--;
						distanciaX-=1;
						if(xActual<xDeseada){
							xActual=xDeseada;
							break;
						}
					}
				}
			}
			//para las y
			if(yDeseada>yActual){
				while(distanciaY>=1){
					yActual++;
					distanciaY-=1;
					if(yActual>yDeseada){
						yActual=yDeseada;
						break;
					}
				}
			}else{
				if(yDeseada<yActual){
					while(distanciaY>=1){
						yActual--;
						distanciaY-=1;
						if(yActual<yDeseada){
							yActual=yDeseada;
							break;
						}
					}
				}
			}
		}
	}
	public void calculaAngulo(){
		int y =yDeseada-yActual;
		int x = xDeseada-xActual;
		if(x<0)
			x=x*-1;
		if(y<0)
			y=y*-1;
		angulo = Math.atan2(y,x);
	}
	public void asignarPosicionDeseada(int x, int y) {
		xDeseada=x;
		yDeseada=y;
		calculaAngulo();
		distanciaX=0;
		distanciaY=0;
		
	}
	public int getxActual() {
		return xActual;
	}
	public void setxActual(int xActual) {
		this.xActual = xActual;
	}
	public int getyActual() {
		return yActual;
	}
	public void setyActual(int yActual) {
		this.yActual = yActual;
	}
	public void asignarPosicionActual(int x, int y) {
		xActual=x;
		yActual=y;
		
	}
}
